The present invention relates in general to arbitration among users of a shared resource, such as a digital data bus, for access to the resource.
Users that share a data bus, such as PC boards connected by a common backplane within a system, typically compete for use of the data bus by participating in some form of arbitration. In one known arbitration scheme, each user having data to send on the shared data bus applies an arbitration signal to a wired-OR arbitration bus, and subsequently checks the resultant signal on the arbitration bus. If the resultant signal corresponds to that expected by the user, then that user wins the use of the shared data bus and is permitted to transfer a data message over it. Some arbitration schemes include a series of signal matching cycles, where the ultimate winner of the data bus is the user for which the resultant signal on the arbitration bus matches the expected signal in each of the cycles.
Such arbitration procedures generally require some form of synchronization between the users. Typically, synchronization is provided by having the users time the arbitration based on a system clock that simultaneously drives all users. Another alternative is to select one user to serve as a "master" during arbitration and have that user supply arbitration timing for all users. A third alternative is to synchronize the clocks by, for example, phase locking the individual user clocks. Propagation and other delays among a large number of users complicates clock synchronization among the users, and limits the maximum usable clock frequency, and thus the speed of the arbitration cycles and subsequent data bus transfers.
It is also known to award priority to users in the arbitration based on whether the users have previously been denied access, to promote fair allocation of the shared resource among the users.